The use of streaming media servers to support cable television, IPTV, and wireless video transmission present many challenges. For instance, different clients such as standard definition (SD) and high definition (HD) set top terminals, personal computers and PDAs and mobile phones can have different display, power, communication, and computational capabilities. A successful video streaming system needs to be able to stream video to these heterogeneous clients. By way of example, in the context of cable television and IPTV, industry standard transmission rates support both standard definition and high definition. Because of the difference in encoding between an SD and an HD version of the same program, the HD version typically requires a 4-5 times higher transmission rate and 4-5 times more storage space on the server. Depending on the encoding technique and the length of program, typical transmission rates range from between 2-4 Mbps for SD programming and 8-15 Mbps for HD programming transmission rates and typical file storage requirements range from around 0.75-1.66 GBytes/hour for SD and 3-7 GBytes/hour for HD. In contrast, wireless devices, which typically support much lower network interface transmission rates and much lower display resolutions, have transmission rates of about 0.256-1 Mbps and file storage requirements of 100-400 Mbytes/hour.
One way to support a wide variety of different client devices without maintaining multiple files of the same program in different formats is to employ scalable coding techniques. Scalable coding generates multiple layers, for example a base layer and an enhancement layer, for the encoding of video data. The base layer typically has a lower bit rate and lower spatial resolution and quality, while the enhancement layer increases the spatial resolution and quality of the base layer, thus requiring a higher bit rate. The enhancement layer bit stream is only decodable in conjunction with the base layer, i.e. it contains references to the decoded base layer video data which are used to generate the final decoded video data. By using scalable coding, a single file can be streamed to client devices with different capabilities. Each client device can then decode only those layers it needs and is capable of supporting.
Scalable encoding has been accepted for incorporation into established video coding standards. In particular, the Scalable Video Coding (SVC) extension of the H.264/AVC (AVC) video coding standard features spatial, quality and temporal scalability. Backwards compatibility with legacy decoding devices is maintained through an H.264/AVC compliant base layer, which represents the lowest quality of an SVC bit-stream. However, it is often desirable to also provide the higher quality layers to legacy H.264/AVC devices.
Streaming media servers may be used in combination with statistical multiplexing techniques in order to deliver content to client devices. In statistical multiplexing, several programs each comprising a compressed video bit stream are combined into a single multiplexed bit stream, e.g., for transmission on a single channel. When a statistical multiplexer combines multiple bit streams, an algorithm may be used to adapt the bit rate of each stream but the total bit rate of the output multiplex may be kept at a constant value. Statistical multiplexing encompasses multiplexing architecture having a reverse message path from the multiplexer to the encoders. This is also often referred to closed-loop statistical multiplexing. Closed-loop statistical multiplexers are typically higher in cost than open-loop statistical multiplexers because they require high performance encoders and thus are typically only used to transmit bit streams over a channel that serves many subscribers. Open-loop statistical multiplexers are less expensive and therefore can be used to transmit bit streams over a channel that serves a much smaller set of subscribers.
Although the delivery of content using both SVC streams and statistical multiplexing can be very effective, it is generally not practical because, as noted above, most legacy client devices do not incorporate SVC decoders. Rather, most legacy devices can only decode the AVC compliant base layer, which represents the lowest quality of an SVC bit-stream. However, it is often desirable to also provide the higher quality layers to legacy AVC client devices.
While statistical multiplexing can be used with AVC streams to deliver content, such a technique does not offer the aforementioned advantages that can arise from the use of SVC streams. In addition, if lower cost open-loop statistical multiplexers are used to multiplex AVC streams, only a very limited increase in efficiency can be achieved, in part because AVC streams are already coded relatively efficiently. In particular, open-loop statistical multiplexing generally cannot reduce the bit rate of an AVC stream by more than about 10% without an unacceptable degradation in video quality.